package cn.wxq.daily.empdailymgforserve.service.impl;

import cn.wxq.daily.empdailymgforserve.domain.Attendance;
import cn.wxq.daily.empdailymgforserve.mapper.AttendanceDao;
import cn.wxq.daily.empdailymgforserve.service.AttendanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 考勤业务
 */
@Service
public class AttendanceServiceImpl implements AttendanceService {
    @Autowired
    private AttendanceDao attendanceDao;

    /**
     * 条件查询
     *
     * @param attendance
     * @return
     */
    @Override
    public List<Attendance> selectByPage(Attendance attendance) {
        return attendanceDao.selectByPage(attendance);
    }

    /**
     * 新增
     *
     * @param attendance
     * @return
     */
    @Override
    public int insertAttendance(Attendance attendance) {
        /**
         * 返回状态设定，1：上班打卡成功，2：下班打卡成功,900:打卡失败
         */

        /**
         * 1)先获取用户当前打卡状态（传入userID,当天时间），得到信息
         * 2）判断是否存在第一次打卡时间，存在则进行下班打卡，不存在则进行第一次打卡
         */
        /**
         * 判断设定打卡位置，一致则打卡成功，否则返回0
         */
        //实现 将日期串转成日期类型(格式是yyyy-MM-dd HH:mm:ss)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String courentDate = sdf.format(new Date());
        System.out.println("当前时间"+courentDate);
        //1)先获取用户当前打卡状态（传入userID,当天时间），得到信息，每天
        attendance.setClockTime(courentDate);
        Attendance attendancesIsDone = attendanceDao.selectByUserTime(attendance);
        if (attendancesIsDone != null && attendancesIsDone.getClockStartTime() != null) {
            /**
             * 存在最早打卡时间，则进行下班打卡
             */
            System.out.println("获取到的时间：" + attendancesIsDone.getClockStartTime());
            if (attendancesIsDone.getClockStartTime() != null) {
                System.out.println("已存在打卡最早时间：" + attendancesIsDone.getClockStartTime());
                //设置下班打卡时间
                System.out.println("更新id"+attendancesIsDone.getClockId());
                attendance.setClockId(attendancesIsDone.getClockId());
                attendance.setClockEndTime(new Date());
                int up = attendanceDao.updateAttendance(attendance);
                if (up > 0) {
                    return 2;
                } else {
                    System.out.println("返回900");
                    return 900;
                }
            }

        } else {
            System.out.println("今天你还没打卡呢，即将为您打卡：");
            //设置打卡日期（默认当前日期）
//            attendance.setClockTime(new Date());
            //打卡最早时间
            attendance.setClockStartTime(new Date());
            int in = attendanceDao.insertAttendance(attendance);
            if (in > 0) {
                return 1;
            } else {
                return 900;
            }
        }
        return 900;
    }


    /**
     * 修改
     *
     * @param attendance
     * @return
     */
    @Override
    public int updateAttendance(Attendance attendance) {
        return attendanceDao.updateAttendance(attendance);
    }

    /**
     * 删除
     *
     * @param clockId
     * @return
     */
    @Override
    public int deleteById(Integer clockId) {
        return attendanceDao.deleteById(clockId);
    }

    @Override
    public Attendance selectAttendanceById(Integer clockId) {
        return attendanceDao.selectAttendanceById(clockId);
    }
}
